package com.spn.blog.api.controller.article;

import com.spn.blog.common.utils.QiniuUtils;
import com.spn.blog.common.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.util.UUID;

@Api(tags = "文件上传模块")
@RestController
@RequestMapping("api/upload")
public class UploadController {



    @ApiOperation(value = "图片文件上传")
    @PostMapping
    public Result upload(@RequestParam("file")MultipartFile file){
        // MultipartFile Spirng专门接受文件的类型，@RequestParam注解用于接受文件
        // 原始文件名称，例如 aa.png,我们不要原始名字，我们要UUID加工过的名字。
        String originalFilename = file.getOriginalFilename();
        // UUID唯一名字
        String fileName = UUID.randomUUID().toString()
                + "."
                + StringUtils.substringAfterLast(originalFilename, ".");
        // 我们图片不使用应用服务器，可能会造成网络拥堵。使用一个图片服务器
        // 我们这里使用七牛云提供的免费服务器，按量付费，速度快
        boolean upload = QiniuUtils.upload(file, fileName);
        if (upload) {
            return Result.success(QiniuUtils.url + fileName);
        }
        return Result.fail(20001, "上传失败");
    }
}
